package com.hzlh.mapper;

import java.util.List;
import java.util.Map;

import com.hzlh.domain.po.PermissionsPo;
import com.hzlh.domain.po.RolePermPo;
import com.hzlh.domain.po.RolePo;
import com.hzlh.domain.po.UserRolesPo;

public interface RolePermMapper {
	
	/**
	 * @Description: 获取用户角色分配权限-授权名称
	 * @param roleId
	 * @return List<String>  
	 * @throws
	 * @author liu_wenfeng
	 * @date 2015年3月3日 下午2:12:41
	 */
	public List<String> getRoleAuthorizNames(Long roleId);
	
	/**
	 * @Description: 通过授权名称获取用户权限
	 * @param authorizname
	 * @return List<PermissionsPo>  
	 * @throws
	 * @author liu_wenfeng
	 * @date 2015年3月11日 上午10:08:34
	 */
	public List<PermissionsPo> getPermAuthorizName(String authorizname);
	
	/**
	 * @Description: 获取权限列表
	 * @param map
	 * @return List<PermissionsPo>  
	 * @throws
	 * @author liu_wenfeng
	 * @date 2014年9月10日 下午3:00:00
	 */
	public List<PermissionsPo> getPermissionsPage(Map<String,Object> map);
	
	/**
	 * @Description: 通过id获取权限
	 * @param id
	 * @return PermissionsPo  
	 * @throws
	 * @author liu_wenfeng
	 * @date 2014年9月10日 下午3:00:42
	 */
	public PermissionsPo getPermissionsById(Long id);
	
	/**
	 * @Description: 记录条数
	 * @param map
	 * @return int  
	 * @throws
	 * @author liu_wenfeng
	 * @date 2014年9月10日 下午3:01:08
	 */
	public int getPermissionsCount(Map<String,Object> map);
	
	/**
	 * @Description: 获取父模块节点
	 * @return List<PermissionsPo>  
	 * @throws
	 * @author liu_wenfeng
	 * @date 2014年9月12日 上午11:28:31
	 */
	public List<PermissionsPo> getParentPerms();
	
	/**
	 * @Description: 获取子模块、权限节点
	 * @param parentId
	 * @return List<PermissionsPo>  
	 * @throws
	 * @author liu_wenfeng
	 * @date 2014年9月15日 下午4:27:34
	 */
	public List<PermissionsPo> getChildrenPerms(Long parentId);
	
	public List<PermissionsPo> getAllPermissions(Map<String,Object> map);
	
	/**
	 * @Description: 新增权限
	 * @param po
	 * @return int  
	 * @throws
	 * @author liu_wenfeng
	 * @date 2014年9月10日 下午3:02:44
	 */
	public int insertPermissions(PermissionsPo po);
	
	/**
	 * @Description: 修改权限
	 * @param po
	 * @return int  
	 * @throws
	 * @author liu_wenfeng
	 * @date 2014年9月10日 下午3:03:06
	 */
	public int updatePermissions(PermissionsPo po);
	
	/**
	 * @Description: 删除权限
	 * @param ids
	 * @return int  
	 * @throws
	 * @author liu_wenfeng
	 * @date 2014年9月10日 下午3:03:19
	 */
	public int deletePermissions(Long[] ids);
	
	/**
	 * @Description: 获取角色分页列表
	 * @param map
	 * @return List<RolePo>  
	 * @throws
	 * @author liu_wenfeng
	 * @date 2014年9月10日 下午3:12:15
	 */
	public List<RolePo> getRolePage(Map<String,Object> map);
	
	/**
	 * @Description: 获取角色列表
	 * @param map
	 * @return List<RolePo>  
	 * @throws
	 * @author liu_wenfeng
	 * @date 2014年9月10日 下午3:12:15
	 */
	public List<RolePo> getRoleList(Map<String,Object> map);
	
	/**
	 * @Description: 通过用户id获取用户下的角色
	 * @param userId
	 * @return List<RolePo>  
	 * @throws
	 * @author liu_wenfeng
	 * @date 2014年9月15日 上午9:39:00
	 */
	public List<RolePo> getUserRole(Long userId);
	
	/**
	 * @Description: 通过id获取角色
	 * @param id
	 * @return RolePo  
	 * @throws
	 * @author liu_wenfeng
	 * @date 2014年9月10日 下午3:11:57
	 */
	public RolePo getRoleById(Long id);
	
	/**
	 * @Description: 记录条数
	 * @param map
	 * @return int  
	 * @throws
	 * @author liu_wenfeng
	 * @date 2014年9月10日 下午3:01:08
	 */
	public int getRoleCount(Map<String,Object> map);
	
	/**
	 * @Description: 新增角色
	 * @param po
	 * @return int  
	 * @throws
	 * @author liu_wenfeng
	 * @date 2014年9月10日 下午3:02:44
	 */
	public int insertRole(RolePo po);
	
	/**
	 * @Description: 修改角色
	 * @param po
	 * @return int  
	 * @throws
	 * @author liu_wenfeng
	 * @date 2014年9月10日 下午3:03:06
	 */
	public int updateRole(RolePo po);
	
	/**
	 * @Description: 删除角色
	 * @param id
	 * @return int  
	 * @throws
	 * @author liu_wenfeng
	 * @date 2014年9月10日 下午3:03:19
	 */
	public int deleteRole(Long[] id);
	
	/**
	 * @Description: 批量新增用户角色
	 * @param po
	 * @return int  
	 * @throws
	 * @author liu_wenfeng
	 * @date 2014年9月15日 上午11:19:04
	 */
	public int batchInsertUserRole(List<UserRolesPo> pos);

	/**
	 * @Description: 通过用户id删除用户角色关联数据
	 * @param userIds
	 * @return boolean  
	 * @throws
	 * @author liu_wenfeng
	 * @date 2014年9月15日 下午2:21:43
	 */
	public boolean deleteUserRole(Long[] userIds);

	/**
	 * @Description: 保存权限排序
	 * @param list
	 * @return int  
	 * @throws
	 * @author liu_wenfeng
	 * @date 2014年9月17日 下午5:58:57
	 */
	public int updatePermSort(List<PermissionsPo> list);

	/**
	 * @Description: 通过父节点获取最大排序值
	 * @return int  
	 * @throws
	 * @author liu_wenfeng
	 * @date 2014年9月17日 下午6:29:06
	 */
	public int getRankNum(Long parentId);

	/**
	 * @Description: 批量插入绑定角色权限数据
	 * @param pos
	 * @return int  
	 * @throws
	 * @author liu_wenfeng
	 * @date 2014年9月18日 上午10:36:01
	 */
	public int batchAddRolePerm(List<RolePermPo> pos);

	/**
	 * @Description: 根据角色删除(清除)关联
	 * @param roleId
	 * @return boolean  
	 * @throws
	 * @author liu_wenfeng
	 * @date 2014年9月18日 下午12:11:30
	 */
	public int deleteRolePerm(Long[] roleId);
	
	/**
	 * @Description: 根据权限删除(清除)关联
	 * @param permissionId
	 * @return int  
	 * @throws
	 * @author liu_wenfeng
	 * @date 2014年9月18日 下午7:01:29
	 */
	public int deleteRolePermIds(Long[] permissionId);

	/**
	 * @Description: 根据角色ID获取已选权限
	 * @param roleId
	 * @return List<Long>  
	 * @throws
	 * @author liu_wenfeng
	 * @date 2014年9月18日 下午12:52:35
	 */
	public List<Long> getRolePermIds(Long roleId);

}
